package com.dfe.backend.common.sax.spd.substation.region.device;

import lombok.Data;

import java.util.List;

/**
 * 【描述】：7.2.6　表示电气设备上的实现一个特定逻辑功能，满足下列规定：
 * a)Component元素包含0个或多个ComponentPin元素。
 * b)Component元素除包含ComponentTemplate元素所有属性外，还包含icdRef属性和icdPort属性，icdRef属性和icdPort属性应符合表18的规定。
 * c)当Component所属的Device或SubDevice元素的partName属性不为空时，Component元素为partName对应的PartTemlate或InPartTemplate下相同name的ComponentTemplate元素实例。当Component元素与ComponentTemplate元素的属性值不同时，应显式实例化Component元素，并声明值不同的属性，未声明的属性与ComponentTemplate元素的属性值相同。当Component元素与ComponentTemplate元素的属性值相同时，可隐式实例化Component元素。
 * d)当Component所属的Device或SubDevice元素的partName属性为空时，Component元素及其属性应显式实例化。
 *
 * @author LiChang
 * @since 2025-7-29 11:48
 */
@Data
public class Component {

    /**
     * 元件的名称。在一个部件或内部器件下应唯一
     */
    private String name;
    /**
     * 元件的描述
     */
    private String desc;
    /**
     * 元件的分组
     */
    private String group;
    /**
     * 元件的类型
     */
    private String type;
    /**
     * 当工程应用DL/T 860通信协议时，若元件与设备ICD模型中的DA或DO有关联，属性值应为DO或DA的引用地址，格式为：“LD/LN.DO.DA”。当存在多个映射时，不同变量使用“;”分隔
     */
    private String icdRef;
    /**
     * 当工程应用DL/T 860通信协议时，若元件与设备ICD模型的端口有关联，属性值应为ICD模型中端口的名称。当存在多个映射时，不同变量使用“;”分隔
     */
    private String icdPort;

    private List<ComponentPin> componentPinList;
}
